package com.srlg.app.config;

import io.swagger.v3.oas.annotations.ExternalDocumentation;
import io.swagger.v3.oas.annotations.OpenAPIDefinition;
import io.swagger.v3.oas.annotations.info.Contact;
import io.swagger.v3.oas.annotations.info.Info;
import io.swagger.v3.oas.annotations.info.License;
import io.swagger.v3.oas.annotations.servers.Server;
import org.springframework.context.annotation.Configuration;

/**
 * @desc:
 * @author: srlg li
 * @date: 2023/12/12 23:45
 */
@Configuration
@OpenAPIDefinition(
    // ## API的基本信息，包括标题、版本号、描述、联系人等
    info = @Info(
        title = "Swagger3.0 (Open API) 框架学习示例文档",       // Api接口文档标题（必填）
        description = "学习Swagger框架而用来定义测试的文档",      // Api接口文档描述
        version = "2.0.4",                                   // Api接口版本
        termsOfService = "https://xxx.com/",             // Api接口的服务条款地址
        contact = @Contact(
            name = "srlg li",                            // 作者名称
            email = "srlg333@163.com",                  // 作者邮箱
            url = "https://www.srlg.com/"  // 介绍作者的URL地址
        ),
        license = @License(                                                // 设置联系人信息
            name = "Apache 2.0",                                       // 授权名称
            url = "https://www.apache.org/licenses/LICENSE-2.0.html"   // 授权信息
        )
    ),
    // ## 表示服务器地址或者URL模板列表，多个服务地址随时切换（只不过是有多台IP有当前的服务API）
    servers = {
        @Server(url = "http://127.0.0.1:8082/", description = "本地服务器一服务"),
        @Server(url = "http://127.0.0.1:8082/", description = "本地服务器二服务"),
    },
    externalDocs = @ExternalDocumentation(description = "更多内容请查看该链接", url = "xxx"))
public class SwaggerOpenApiConfig {

//    /***
//     * 构建Swagger3.0文档说明
//     * @return 返回 OpenAPI
//     */
//    @Bean
//    public OpenAPI customOpenAPI() {
//
//        // 联系人信息(contact)，构建API的联系人信息，用于描述API开发者的联系信息，包括名称、URL、邮箱等
//        // name：文档的发布者名称 url：文档发布者的网站地址，一般为企业网站 email：文档发布者的电子邮箱
//        Contact contact = new Contact()
//            .name("蚂蚁小哥")                             // 作者名称
//            .email("xiaofeng@qq.com")                   // 作者邮箱
//            .url("https://www.cnblogs.com/antLaddie/")  // 介绍作者的URL地址
//            .extensions(new HashMap<String, Object>()); // 使用Map配置信息（如key为"name","email","url"）
//
//        // 授权许可信息(license)，用于描述API的授权许可信息，包括名称、URL等；假设当前的授权信息为Apache 2.0的开源标准
//        License license = new License()
//            .name("Apache 2.0")                         // 授权名称
//            .url("https://www.apache.org/licenses/LICENSE-2.0.html")    // 授权信息
//            .identifier("Apache-2.0")                   // 标识授权许可
//            .extensions(new HashMap<String, Object>());// 使用Map配置信息（如key为"name","url","identifier"）
//
//        //创建Api帮助文档的描述信息、联系人信息(contact)、授权许可信息(license)
//        Info info = new Info()
//            .title("Swagger3.0 (Open API) 框架学习示例文档")      // Api接口文档标题（必填）
//            .description("学习Swagger框架而用来定义测试的文档")     // Api接口文档描述
//            .version("1.2.1")                                  // Api接口版本
//            .termsOfService("https://example.com/")            // Api接口的服务条款地址
//            .license(license)                                  // 设置联系人信息
//            .contact(contact);                                 // 授权许可信息
//        // 返回信息
//        return new OpenAPI()
//            .openapi("3.0.1")  // Open API 3.0.1(默认)
//            .info(info);       // 配置Swagger3.0描述信息
//    }
}
